home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 8434 / 8434.xpi / chrome / content / specifySites.js < prev    next >
Text File  |  2008-11-16  |  3KB  |  107 lines

  1. var urlElement, STRINGS, siteListElement, addElement, typeElement, deleteElement, siteListTreeElement;
  2. function init() {
  3.     urlElement = document.getElementById("url");
  4.     siteListElement = document.getElementById("site-list");
  5.     addElement = document.getElementById("add");
  6.     typeElement = document.getElementById("type");
  7.     deleteElement = document.getElementById("delete");
  8.     siteListTreeElement = document.getElementById("site-list-tree");
  9.     STRINGS = document.getElementById("strings");
  10.     urlElement.focus();
  11. }
  12. function addSpecifySiteEntry() {
  13.     var typeGroup = typeElement.selectedItem;
  14.     var url = urlElement.value;
  15.     if (url.length == 0) {
  16.         return;
  17.     }
  18.     switch (typeGroup.value) {
  19.       case "url":
  20.         try {
  21.             var ios = Components.classes['@mozilla.org/network/io-service;1'].getService(Components.interfaces.nsIIOService);
  22.             var uri = ios.newURI(url, "UTF-8", null);
  23.         } catch (ex) {
  24.             try {
  25.                 var uri = ios.newURI("http://" + url, "UTF-8", null);
  26.             } catch (ex) {
  27.                 alert(STRINGS.getString("urlNotValid"));
  28.                 return;
  29.             }
  30.         }
  31.         url = uri.spec;
  32.         break;
  33.       case "url-prefix":
  34.         var position = url.indexOf("://");
  35.         if (position == -1) {
  36.             url = "http://" + url;
  37.         }
  38.         break;
  39.       case "domain":
  40.         var position = url.indexOf("://");
  41.         if (position > -1) {
  42.             url = url.substring(position + 3, url.length);
  43.         }
  44.         break;
  45.       default:
  46.         alert("Unrecognized site entry type '" + typeGroup.value + "'");
  47.         return;
  48.     }
  49.     var item = document.createElementNS(googleredesignedCommon.XULNS, "treeitem");
  50.     var row = document.createElementNS(googleredesignedCommon.XULNS, "treerow");
  51.     var typeCell = document.createElementNS(googleredesignedCommon.XULNS, "treecell");
  52.     typeCell.setAttribute("label", typeGroup.label);
  53.     typeCell.setAttribute("value", typeGroup.value);
  54.     var siteCell = document.createElementNS(googleredesignedCommon.XULNS, "treecell");
  55.     siteCell.setAttribute("label", url);
  56.     row.appendChild(typeCell);
  57.     row.appendChild(siteCell);
  58.     item.appendChild(row);
  59.     siteListElement.appendChild(item);
  60.     urlElement.value = "";
  61.     urlElement.focus();
  62.     addElement.disabled = true;
  63. }
  64. function closeSpecifySite() {
  65.     var data = [];
  66.     for (var i = 0; i < siteListElement.childNodes.length; i++) {
  67.         var currentRow = siteListElement.childNodes[i].firstChild;
  68.         data[i] = {type: currentRow.firstChild.getAttribute("value"), site: currentRow.childNodes[1].getAttribute("label")};
  69.     }
  70.     window.arguments[0](data);
  71. }
  72. function urlKeyPress(aEvent) {
  73.     if (aEvent.keyCode == 13) {
  74.         addSpecifySiteEntry();
  75.         aEvent.preventDefault();
  76.     }
  77. }
  78. function urlInput() {
  79.     addElement.disabled = !urlElement.value;
  80. }
  81. function siteListKeyPress(aEvent) {
  82.     if (aEvent.keyCode == 46) {
  83.         deleteSiteList();
  84.     }
  85. }
  86. function deleteSiteList() {
  87.     var itemsToRemove = getSelectedStyles();
  88.     for (var i = 0; i < itemsToRemove.length; i++) {
  89.         itemsToRemove[i].parentNode.removeChild(itemsToRemove[i]);
  90.     }
  91. }
  92. function changeSelection() {
  93.     deleteElement.disabled = getSelectedStyles().length == 0;
  94. }
  95. function getSelectedStyles() {
  96.     var selectedItems = [];
  97.     var rangeCount = siteListTreeElement.view.selection.getRangeCount();
  98.     for (var i = 0; i < rangeCount; i++) {
  99.         var start = {};
  100.         var end = {};
  101.         siteListTreeElement.view.selection.getRangeAt(i, start, end);
  102.         for (var c = start.value; c <= end.value; c++) {
  103.             selectedItems[selectedItems.length] = siteListTreeElement.view.getItemAtIndex(c);
  104.         }
  105.     }
  106.     return selectedItems;
  107. }